ASP.NET实现excel导入数据库 您所在的位置:网站首页 asp excel导入实例 ASP.NET实现excel导入数据库

ASP.NET实现excel导入数据库

2023-09-09 01:40| 来源: 网络整理| 查看: 265

1:说明:此方法建立在已经实现数据库的插入功能上

2:注解:2.1:新建一个文件夹存放excel文件(见example.aspx.cs的GetExcel()方法)

               2.2:控件

               2.3:excel表格式(excel表头与数据库表字段对应)

                        

                2.4:修改数据库插入方法(见example.aspx.cs的InsetData()方法)

3:步骤:1:前台控件:

                  1.1:FileUpload;

                  1.2:Button;

              2:后台响应程序

                  2.1:将excel上传到服务器;

                  2.2:Excel数据导入System.Data.DataTable;

                  2.3:从System.Data.DataTable导入数据到数据库

4:代码:

4.1:example.aspx 4.2:example.aspx.cs

//上传excel数据到数据库------------------------------------------> protected void btnImport_Click(object sender, EventArgs e) { //1:将excel上传到服务器; string fileUrl = this.GetExcel(); //2:将excel数据导入数据库 this.InsetData(this.GetExcelDatatable(fileUrl)); } //1:客户端上传excel到服务器 //@return:fileUrl 服务器文件路径 protected string GetExcel(){ string fileUrl = ""; #region 文件上传 try { //全名 string excelFile = this.fulImport.PostedFile.FileName; //获取文件名(不包括扩展名) string fileName = Path.GetFileNameWithoutExtension(fulImport.PostedFile.FileName); //扩展名 string extentionName = excelFile.Substring(excelFile.LastIndexOf(".") + 1); if (fileName == "" || fileName == null) { Response.Write("alert('请先选择Excel文件!')"); return null; } if (extentionName != "xls" && extentionName != "xlsx") { Response.Write("alert('您上传的不是Excel文件!')"); return null; } //浏览器安全性限制 无法直接获取客户端文件的真实路径,将文件上传到服务器端 然后获取文件源路径 #region 设置上传路径将文件保存到服务器 string dateTime = DateTime.Now.Date.ToString("yyyyMMdd"); string time = DateTime.Now.ToShortTimeString().Replace(":", ""); string newFileName = dateTime + time + DateTime.Now.Millisecond.ToString() + ".xls"; ; //自己创建的文件夹 位置随意 合理即可 fileUrl = Server.MapPath("..\\excel") + "\\" + newFileName; this.fulImport.PostedFile.SaveAs(fileUrl); //Response.Write("alert('已经上传到服务器文件夹')"); return fileUrl; #endregion } catch { Response.Write("alert('数据上传失败,请重新导入')"); return null; } #endregion } //2:Excel数据导入Datable //@param fileUrl 服务器文件路径 //@return System.Data.DataTable dt protected System.Data.DataTable GetExcelDatatable(string fileUrl) { //office2007之前 仅支持.xls //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';"; //支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据; const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; System.Data.DataTable dt = null; //建立连接 OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl)); //打开连接 if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed) { conn.Open(); } System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //获取Excel的第一个Sheet名称 string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim(); //查询sheet中的数据 string strSql = "select * from [" + sheetName + "]"; OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn); DataSet ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; return dt; } //3:从System.Data.DataTable导入数据到数据库 //@param System.Data.DataTable dt protected void InsetData(System.Data.DataTable dt) { int i = 0; string MATER_ID = ""; string MATER_NAME = ""; string MATER_COUNT = ""; string MATER_SPEC = ""; string MATER_COMPANY = ""; string MATER_TIME = ""; foreach (DataRow dr in dt.Rows) {                 //此处遍历获取excel的数据                 MATER_ID = dr[0].ToString().Trim(); MATER_NAME = dr[1].ToString().Trim(); MATER_COUNT = dr[2].ToString().Trim(); MATER_SPEC = dr[3].ToString().Trim(); MATER_COMPANY = dr[4].ToString().Trim(); MATER_TIME = dr[5].ToString().Trim();                 //此处执行你的数据库插入语句即可 string strInsert = "insert into '你的数据库名'.'你的表名' (MATER_ID,MATER_NAME,MATER_COUNT,MATER_SPEC,MATER_COMPANY,MATER_TIME) values(" + MATER_ID + ",'" + MATER_NAME + "'," + MATER_COUNT + ",'" + MATER_SPEC + "','" + MATER_COMPANY + "',to_date('" + MATER_TIME + "','yyyy-mm-dd hh24:mi:ss'))"; int count = new BLL.Common.ComData().ExecuteNonQuery(strInsert); if (count != 0) { i++; } else { Alert("导入失败,数据格式出错!!"); } } if (i == dt.Rows.Count) { Alert("导入成功:共导入" + i + "组数据!!"); } else { Alert("未完全导入:共导入" + i + "组数据!!"); } Search(); } //--------------------------------------------------------------->


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有